进程间通信方式 您所在的位置:网站首页 linux 消息队列可以被多少进程访问 进程间通信方式

进程间通信方式

2023-07-25 03:41| 来源: 网络整理| 查看: 265

消息队列(System V) 作用

从一个进程向另外一个进程发送一个带有类型的数据块

本质

是存储在内核中的一个消息的队列(链表)

特点 每个数据块都被认为有一个类型,接受者进程接收的数据块可以有不同的类型值和管道一样,每个消息的最大长度是有上限的(MSGMAX),每个消息队列的总字节数也是有上限的(MSGMNB),系统上的消息队列总数也是有上限的(MSGMNI)是一个全双工通信,可读可写。生命周期随内核

查看消息队列:ipcs -q

IPC对象数据结构:/usr/include/linux/ipc.h

struct ipc_perm { __kernel_key_t key; __kernel_uid_t uid; __kernel_gid_t gid; __kernel_uid_t cuid; __kernel_gid_t cgid; __kernel_mode_t mode; unsigned short seq; };

消息队列结构:/usr/include/linux/msg.h  

struct msqid_ds { struct ipc_perm msg_perm; struct msg *msg_first; /* first message on queue,unused */ struct msg *msg_last; /* last message in queue,unused */ unsigned short msg_qnum; /* number of messages in queue */ unsigned short msg_qbytes; /* max number of bytes on queue */ __kernel_ipc_pid_t msg_lspid; /* pid of last msgsnd */ __kernel_ipc_pid_t msg_lrpid; /* last receive pid */ __kernel_time_t msg_stime; /* last msgsnd time */ __kernel_time_t msg_rtime; /* last msgrcv time */ __kernel_time_t msg_ctime; /* last change time */ unsigned long msg_lcbytes; /* Reuse junk fields for 32 bit */ unsigned long msg_lqbytes; /* ditto */ unsigned short msg_cbytes; /* current number of bytes on queue */ };

消息队列的系统限制:

#define MSGMNI 16 /*


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有